/*
https://leetcode.cn/problems/rank-teams-by-votes/description/
1366. 通过投票对团队排名
*/

class Solution {
public:
string rankTeams(vector<string>& votes) {
        int m = votes[0].size();
        vector cnt(26, vector<int>(m));

        for(int i = 0; i < votes.size(); i++){
            for(int j = 0; j < m; j++){
                int x = votes[i][j] - 'A';
                cnt[x][j]++;
            }
        }
        string ans = votes[0];
        sort(ans.begin(), ans.end(), [&](char x, char y) {
            int a = x - 'A';
            int b = y - 'A';
            
            // 比较
            for (int i = 0; i < m; i++) {
                if (cnt[a][i] != cnt[b][i]) {
                    return cnt[a][i] > cnt[b][i];  // 更高的得分优先
                }
                //如果在i位置相同，比较下一个位置
            }
            
            // 如果全部位置的得分都相同，则按字母顺序排序
            return x < y;
        });
        return ans;
        
    }
};
